Traditionally, when software was to be executed on a machine, the entire piece of software had to be installed on that machine before the software could run. However, it is possible to use streaming technology to provide software from a location that is remote from the machine at which the software will execute. In a streaming scenario, machine A might execute software that is being streamed to machine A from machine B. In this way, machine A may execute some components of a piece of software even if fewer than all of the components are present on machine A.
One way to carry out this type of software streaming is for the machine on which the software is executing to request components of the software on demand. For example, suppose the software is a game where a user travels from scene to scene and makes choices about where to go next. If each scene is a component of the software, then the direction in which the user chooses to go determines which scene—and therefore which component—will have to be executed next. The game can obtain components responsively, simply waiting to see where the user wants to go and requesting the component that corresponds to the user's choice. Although a game provides a simple example of software that is divided into components, almost any software theoretically could be modularized in this fashion—e.g., a word processor might have one component for the “print preview” function, another for “print”, another for “draw table”, etc.
A problem that arises when software is streamed in this manner is that users may have to wait for components to be downloaded. If components are downloaded only when a user has already requested to execute those components, then the first time a component is used it will not be available on the user's machine, and the user will have to wait for the component to be downloaded. One measure of the quality of a software streaming platform is the amount of time (or, rather, lack thereof) that a user spends waiting to use a part of a program while that part is being downloaded. By this measure, an on-demand platform may provide less quality that could be achieved.